#include <iostream>
#include <thread>
#include "stopwatch.h"

void simulate_work() {
    // 模拟一些耗时操作
    std::this_thread::sleep_for(std::chrono::milliseconds(1500));
}

int main(int argc, char const *argv[]) {
    // 方式1：基本使用
    {
        StopWatch timer;
        simulate_work();
        std::cout << "耗时1: " << timer.elapsed() << "秒" << std::endl;
    }

    // 方式2：重置计时器
    {
        StopWatch timer;
        std::this_thread::sleep_for(std::chrono::seconds(1));
        std::cout << "第一次耗时: " << timer.elapsed() << "秒" << std::endl;

        timer.reset();
        std::this_thread::sleep_for(std::chrono::seconds(2));
        std::cout << "第二次耗时: " << timer.elapsed() << "秒" << std::endl;
    }

    // 方式3：从特定时间点开始计时
    {
        auto start_point = StopWatch::clock::now();
        std::this_thread::sleep_for(std::chrono::milliseconds(500));
        
        StopWatch timer(start_point);
        std::cout << "从特定时间点开始计时: " << timer.elapsed() << "秒" << std::endl;
    }

    // 方式4：提前设置一些已经过去的时间
    {
        StopWatch timer(3);  // 模拟3秒已经过去
        std::this_thread::sleep_for(std::chrono::seconds(1));
        std::cout << "模拟提前3秒: " << timer.elapsed() << "秒" << std::endl;
    }

    return 0;
}